﻿#region Copyright ©2008-2011, Technische Universitaet Muenchen

// ====================================================================================================
//
// Last Changed by       $Author: then $
// Last Changed Date     $LastChangedDate: 2009-12-16 16:37:27 +0100 (Wed, 16 Dec 2009) $
// Last Changed Revision $Rev: 504 $
//
// ====================================================================================================

#endregion

#region

using System;
using System.Collections.Generic;

#endregion

namespace Tum.CollabXT
{
    /// <summary>
    /// Base interface for all PET associations.
    /// </summary>
    public interface IAssociation
    {
        /// <summary>
        /// Id of the association.
        /// </summary>
        string Id { get; set; }

        /// <summary>
        /// Name of the association.
        /// </summary>
        string Name { get; set; }

        /// <summary>
        /// Description of the association.
        /// </summary>
        string Description { get; set; }

        /// <summary>
        /// Storage for content of any type.
        /// To be used for internal temporary variables or as way to pass information from one tool provider to another.
        /// Additionally, data can be stored that is not recognized by all providers, but by some.
        /// </summary>
        Dictionary<string, object> ExtendedData { get; }


        /// <summary>
        /// Identifier of the element this association orinated from.
        /// </summary>
        string SourceId { get; }

        /// <summary>
        /// Identifier of the element this association goes to.
        /// </summary>
        string DestinationId { get; }


        /// <summary>
        /// Type of the source element.
        /// </summary>
        Type SourceType { get; }

        /// <summary>
        /// Type of the destination element.
        /// </summary>
        Type DestinationType { get; }
    }
}